export class MedicalReportResult {
    constructor(commonData, items, commonDataResultNum, logId) {
        //原有数据
        this.commonData = commonData  //患者具体信息
        this.items = items    //患者检查项目
        this.commonDataResultNum = commonDataResultNum    //	患者具体信息的识别结果数，表示CommonData的元素个数
        this.Item_row_num = 0;
        this.logId = logId;

        this.resultList = {
            patientInfo: '',   //患者具体信息
            patientInfoHtml: '',   //患者具体信息
            checkItem: '',       //检查的项目
            checkItemHtml: ''          //检查的项目
        }

    }


    parseJSON = (res) => {

        //注意：res.data.data得到的结果是一个字符串，还要转换成json数据才行
        const data = JSON.parse(res.data.data)


        //获取CommonData数据
        this.commonData = data.words_result.CommonData.map(item => ({
            wordName: item.word_name,
            word: item.word
        }))

        //获取Item数据
        this.items = data.words_result.Item;


        //获取CommonData_result_num数据
        this.commonDataResultNum = data.CommonData_result_num

        //获取logId
        this.logId = data.log_id;


        //编辑所需要展示数据

// 编辑患者具体信息
        this.resultList.patientInfo = this.commonData
            .filter(item => item.word && item.word.trim() !== '') // 确保item.word存在且不为空
            .map(item => `${item.word_name} : ${item.word}`) // 为每个非空项创建字符串
            .join(';'); // 使用换行符将每组数据分隔，使得每组数据占据一行


//HTML格式
        this.resultList.patientInfoHtml = this.commonData
            .filter(item => item.word && item.word.trim() !== '') // 确保item.word存在且不为空
            .map(item => `${item.word_name} : ${item.word}`) // 为每个非空项创建字符串
            .join('<br>'); // 使用换行符将每组数据分隔，使得每组数据占据一行


        console.log(this.resultList.patientInfo)

        //编辑患者检查项目

// 提取标题
        const titles = ['项目名称', '项目代号', '参考区间', '结果'];

// 创建标题行
        const titleRowHtml = `<tr>${titles.map(title => `<th>${title}：</th>`).join('')}</tr>`;

// 提取每个项目的所需字段并创建一个数组，每个元素是一个包含对应字段值的数组
        const projectDetails = this.items.map(group => {
            const details = group.reduce((acc, item) => {
                if (titles.includes(item.word_name)) {
                    acc[item.word_name] = item.word;
                }
                return acc;
            }, {});
            return details;
        });

// 创建每个项目的字符串，并与标题对齐
        const projectRowsHtml = projectDetails.map(details => {
            const row = `<tr>${titles.map(title => `<td>${details[title] ? details[title] + '' : ''}</td>`).join('')}</tr>`;
            return row;
        });

// 将标题行和所有项目行组合在一起
        const tableRows = titleRowHtml + projectRowsHtml.join('');

// 完整的HTML表格
        this.resultList.checkItemHtml = `<table>${tableRows}</table>`;


//创建非html格式

        // 创建标题行
        const titleRow = titles.map(title => `${title}：`).join(' | ');


// 创建每个项目的字符串，并与标题对齐
        const projectRows = projectDetails.map(details => {
            const row = titles.map(title => details[title] ? `${details[title]}：` : '').join(' | ');
            return row;
        });


// 将标题行和所有项目行组合在一起，并用 '; ' 分隔
        this.resultList.checkItem = [titleRow, ...projectRows].join('; ');


        console.log(this.resultList.checkItem)


    }

}
